import { findSplitIndex, patchLines } from "./util.ts"; // linesにタイトルを入れないように export const patchTemplate = ( lines: string[], headers: string[], footers: string[], ): string[] => { // headerとfooterに相当する行を補う let bodies: string[] = lines; bodies = patchLines(bodies, headers, "head"); bodies = patchLines(bodies, footers, "tail"); // headerとfooterの間に余裕をもたせる const headerEnd = findSplitIndex(bodies, headers); const footerEnd = findSplitIndex(bodies, footers); if (headerEnd === null || footerEnd === null) { // バグってテンプレの挿入がうまくいかなかったら諦める console.log( "format.tsのコードがバグったためtemplateの挿入を諦めました。\n" + `headerEnd: ${headerEnd}, footerEnd: ${footerEnd}`, ); return lines; } const footerStart = footerEnd + 1 - footers.length; return [ ...bodies.slice(0, headerEnd + 1), "", ...bodies.slice(headerEnd + 1, footerStart).join("\n").trim().split("\n"), "", ...bodies.slice(footerStart), ]; };